<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>生命周期</title>
</head>
<body>
<!--
  1. 挂载（初始化相关属性）
    beforeCreate: 在实例初始化之后，数据观测和事件配置之前被调用
    created：在实例创建完成后被调用
    beforeMount：在挂载开始前被调用
    mounted：el被新创建的vm.$el替换，并挂载到实例上去之后调用
  2. 更新（元素或者组件的变更操作）
    beforeUpdate：数据更新时调用，发生在虚拟dom打补丁之前
    updated：由于数据更改导致虚拟dom重新渲染和打补丁，在这之后会调用
  3. 销毁（销毁相关属性）
    beforeDestroy：实例销毁前调用
    destroyed：实例销毁后调用
-->

<div id="app">
  <div>{{msg}}</div>
  <button @click="update">更新</button>
  <button @click="destroy">销毁</button>

</div>

<script src="../lib/vue.js"></script>
<script>
  let vm = new Vue({
    el: '#app',
    data: {
      msg: '生命周期'
    },
    methods: {
      update() {
        this.msg = '内容改变了'
      },
      destroy(){
        this.$destroy()
      }
    },
    beforeCreate() {
      console.log('beforeCreate')
    },
    created() {
      console.log('created')
    },
    beforeMount() {
      console.log('beforeMount')
    },
    mounted() {
      console.log('mounted')
    },
    beforeUpdate() {
      console.log('beforeUpdate')
    },
    updated() {
      console.log('updated')
    },
    beforeDestroy() {
      console.log('beforeDestroy')
    },
    destroyed() {
      console.log('destroyed')
    }
  })
</script>

</body>
</html>